Providing message status notifications during electronic messaging

ABSTRACT

One or more embodiments described herein include methods and systems of providing message status notifications. The status notifications can comprise one or more of sent, delivered, or accessed/read notifications. In one or more embodiments a status notification is persistently displayed in a thread for each participant in a conversation. Each time the participant accesses a new message, the system can move the status notification adjacent to the new message.

BACKGROUND

1. Technical Field

One or more embodiments relate generally to electronic messaging systemsand methods. More specifically, one or more embodiments relate tosystems and methods for providing status notifications during electronicmessaging.

2. Background and Relevant Art

Messaging applications allow users to send and receive messages.Unfortunately, conventional application user interfaces make itdifficult for a user to perceive who is actively participating in amessaging session. For example, once a message has been sent, the sendertypically does not know if, or when, the intended recipient has seen themessage. This may be because, for example, the intended recipient is notnear a computing device, does not have the messaging application open,or has spotty network access. During a group communication session,these disadvantages are typically compounded due to the increased numberof participants.

Some conventional messaging applications provide delivery and readreceipts. For example, some messaging applications provide one or morecheckmarks next a message to indicate whether the message has beendelivered or read. More specifically, some applications display a firstcheckmark next to a message when the message is delivered and a secondcheckmark next to the message when the message is read. Otherconventional messaging applications display a single checkmark next tothe most recently read message. Additionally, some messagingapplications include under the most recent message the name of anyparticipants who have read the message.

While these improvements provide users with some context on whether amessage has been received or seen, conventional messaging applicationsstill have various drawbacks in relation to read and delivery receipts.For example, conventional messaging applications typically only provideread receipts for the latest message in a thread. Thus, a user may notbe able to tell which less recent messages have been accessed. This isparticularly true in the context of group conversations with multipleparticipants.

Furthermore, conventional messaging applications typically only providea user with read receipts for messages sent by the user. In other words,conventional messaging applications typically fail to provide deliveryor read receipts for messages sent by other users. As such, a user maynot be able to decipher which messages sent by other group members havebeen read.

In addition to the foregoing, check marks and participant names canquickly clutter the graphical user interface (GUI) of the messagingapplication. The clutter is typically exacerbated in group messagingsessions that include more than a few participants. The clutter causedby conventional delivery/read receipts is also magnified when the GUI ispresented on a hand-held or other device with a limited display size.

Accordingly, there are a number of disadvantages with conventionalelectronic messaging applications and systems.

SUMMARY

Some embodiments provide benefits and/or solve one or more of theforegoing or other problems in the art with methods and systems forproviding status notifications during electronic messaging sessions. Forexample, methods and systems described herein notify a user ofcommunications seen by recipients. In a group communication session, themethods and systems described herein can provide the user with aplurality of notifications indicating which messages each participant inthe group has read or otherwise accessed.

Additionally, one or more methods and systems described herein providesent and delivered notifications. For example, a first notification cannotify a user as messages are sent from a communication deviceassociated with the user. Along similar lines, a second notification canindicate to a user that a message has been delivered to a communicationdevice associated with an intended recipient of the message.

In addition to the foregoing, one or more embodiments can provide theforegoing or other benefits without cluttering a GUI of the messagingapplication. In particular, one or more embodiments can providenotifications indicating that a message has been sent or deliveredwithout the use of icons. Still further, one or more embodiments canprovide notifications that indicate which users have seen which messageswithout including names of users or other lengthy notifications.

Additional features and advantages of the embodiments will be set forthin the description that follows, and in part will be obvious from thedescription, or may be learned by the practice of such exemplaryembodiments. The features and advantages of such embodiments may berealized and obtained by means of the instruments and combinationsparticularly pointed out in the appended claims. These and otherfeatures will become more fully apparent from the following descriptionand appended claims, or may be learned by the practice of such exemplaryembodiments as set forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above recited and otheradvantages and features of the invention can be obtained, a moreparticular description of the invention briefly described above will berendered by reference to specific embodiments thereof that areillustrated in the appended drawings. It should be noted that thefigures are not drawn to scale, and that elements of similar structureor function are generally represented by like reference numerals forillustrative purposes throughout the figures. In the following drawings,bracketed text and blocks with dashed borders (e.g., large dashes, smalldashes, dot-dash, dots) are used herein to illustrate optional featuresor operations that add additional features to embodiments of theinvention. Such notation, however, should not be taken to mean thatthese are the only options or optional operations, and/or that blockswith solid borders are not optional in certain embodiments of theinvention. Understanding that these drawings depict only typicalembodiments of the invention and are not therefore to be considered tobe limiting of its scope, the invention will be described and explainedwith additional specificity and detail through the use of theaccompanying drawings in which:

FIG. 1 illustrates a schematic diagram of a messaging system inaccordance with one or more embodiments;

FIG. 2 illustrates a detailed schematic diagram of the components of thesystem of FIG. 1 in accordance with one or more embodiments;

FIGS. 3A-3F illustrate various views of a user interface of a messagingapplication including status notifications in accordance with one ormore embodiments;

FIGS. 4A-4F illustrate various views of another user interface of amessaging application including status notifications in accordance withone or more embodiments;

FIG. 5 illustrates yet another user interface of a messaging applicationincluding status notifications in accordance with one or moreembodiments;

FIG. 6 illustrates a flowchart of a series of acts in a method ofproviding status notifications in accordance with one or moreembodiments;

FIG. 7 illustrates a flowchart of a series of acts in another method ofproviding status notifications in accordance with one or moreembodiments;

FIG. 8 illustrates a block diagram of an exemplary computing device inaccordance with one or more embodiments; and

FIG. 9 is an example network environment of a social networking systemin accordance with one or more embodiments.

DETAILED DESCRIPTION

The embodiments provide messaging methods and systems that providemessage status notifications to a user. For example, a messagingapplication can provide notifications to a user on when messages aresent, delivered, and/or read by other participants. In particular, themessaging application can provide notification in a messaging GUI toindicate the status of messages in a communication thread.

In one or more embodiments, a messaging application provides anotification element representing the recipient of a message. Themessaging application can position the notification element within amessaging GUI next to the message most recently accessed by therecipient. As the intended recipient accesses additional messages in thecommunication thread, the messaging application can move thenotification element down the communication thread such that thenotification element remains adjacent to the message most recentlyaccessed by the recipient. As such, the messaging application can allowa user to readily identify which messages a recipient has, or has not,accessed based on the position of the notification element in thecommunication thread. Furthermore, the notification element can indicateto the user which message the recipient viewed last regardless ofwhether it is the most recent message in the communication thread or anolder message.

Similarly, in a group electronic messaging conversation, the messagingapplication can provide a notification element for each participant. Thenotification elements can indicate the messages most recently accessedby each participant in the group electronic messaging conversation. Asnew messages are added to the conversation, the messaging applicationcan move a given participant's notification element as the givenparticipant accesses additional messages.

The messaging application can also notify a user as messages aresuccessfully sent from a communication device associated with the user.In particular, the messaging application can provide a sent notificationin the messaging GUI each time a message is successfully sent. In one ormore embodiments, the sent notification can avoid or reduce GUI clutter.For example, the sent notification can comprise a change in acharacteristic or attribute of the display of the message within theGUI.

Along similar lines, the messaging application can notify a sender of amessage when the message is successfully received at a communicationdevice associated with an intended recipient. In particular, themessaging application can provide a received notification in themessaging GUI each time a message is successfully received. In one ormore embodiments, the received notification can avoid or reduce GUIclutter. For example, the received notification can comprise anadditional change in a characteristic or attribute of the display of themessage within the GUI.

Referring now to the figures, FIG. 1 is a schematic diagram illustratingan exemplary messaging system 100 in accordance with an embodiment ofthe present invention. The messaging system 100 can provide theinfrastructure that allows a messaging application to provide messagestatus notifications to a user. An overview of the messaging system 100will be described next in relation to FIG. 1. Thereafter, a moredetailed description of the components and processes of the messagingsystem will be described in relation to FIG. 2.

As illustrated by FIG. 1, the messaging system 100 can include aplurality of messaging applications 102 a, 102 b, 102 c. Each messagingapplication can allow an associated user 104 a, 104 b, 104 c toelectronically send and receive messages. As used herein, the term“message” or “electronic message” refers to a communication that amessaging application can both send and receive. Messages can includetext messages, photos, stickers or other icons, videos, voicerecordings, music, voice mails, etc. In particular, each messagingapplication 102 a, 102 b, 102 c can communicate with one or morecommunication servers 106 via one or more networks 108. The network 108can comprise any of the networks describe below in relation to FIGS. 8and 9.

The embodiment illustrated in FIG. 1 includes users 104 a, 104 b, 104 caccessing a messaging application 102 a, 102 b, 102 c. The messagingapplications 102 a, 102 b, 102 c can comprise a network application,such as a web application or a native application. The messagingapplications 102 a, 102 b, 102 c can provide messaging GUIs that allowthe users 104 a, 104 b, 104 c to compose and read messages as describedin greater detail below.

FIG. 1 shows the communication server 106 and each of the messagingapplications 102 a, 102 b, 102 c communicatively coupled via network108. One will appreciate in light of the disclosure here that theinvention is not so limited. For example, the communication server 106and/or each of the messaging applications 102 a, 102 b, 102 c cancommunicate with one another in any other suitable manner, such as via apeer-to-peer protocol that bypasses network 108.

FIG. 2 illustrates a schematic diagram illustrating a messaging system100 a in accordance with an embodiment of the present invention. Themessaging system 100 a is one example embodiment of a messaging system100 described above in relation to FIG. 1. As shown, the messagingsystem 100 a can include a messaging application 102 and a messagingfacilitator 200. The user 104 can use a computing device 202 to accessthe messaging application 102. The computing device 202 can comprise anyof the computing devices described below in relation to FIG. 8. Inembodiments where the messaging application 102 is a web application,the user 104 may interface with the messaging application 102 using aweb browser 204 application or a communication application 206 (alsoreferred to as a special-purpose client application later herein), andthus these applications may or may not be considered as part of themessaging application 102.

In such embodiments where the messaging application 102 is a webapplication, the backend of the messaging application 102 (i.e., the setof applications providing data and logic for the messaging application102) may include a web application server 208 (including but not limitedto the Apache HTTP Server by the Apache Software Foundation, InternetInformation Services (IIS) by Microsoft Corporation, nginx by NGINX,Inc., the open-source lighttpd web server, and Google Web Server (GWS)by Google Inc.) and optionally a relational or non-relational database210 (including but not limited to MySQL by Oracle Corporation,PostgreSQL by the PostgreSQL Global Development Group, Apache Cassandraby the Apache Software Foundation, HBase by the Apache SoftwareFoundation, another NoSQL database, and MongoDB by 10 gen).

In embodiments where the messaging application 102 is a nativeapplication, the messaging application 102 can utilize the communicationapplication 206. The communication application 206 in turn may utilizean application server 212 (e.g., a Java application server) and/ordatabase 210 of a separate server computing device 214. Applicationsthat use a server computing device 214 can be deemed a networkapplication. Applications that do not utilize the application server 212or database 210 can be deemed a “standalone” application. Accordingly,depending upon the context of the term “application,” this term mayrefer to software executing on the user's computing device 202 and/orthe server computing device 214. In particular, at least a first portionof the messaging application software can execute on the user'scomputing device 202 and at least a second portion of the messagingapplication software can execute on the set of one or more servercomputing devices 214.

The messaging application 102 may also comprise an access detector 218,a GUI generator 220, a GUI updater 222, and a message handler 224. Eachof the components 218-224 of the communication application 102 can be incommunication with one another using any suitable communicationtechnologies. It will be recognized that although the components 218-224of the communication application 102 are shown to be separate in FIG. 2,any of components 218-224 may be combined into fewer components, such asinto a single component, or divided into more components as may serve aparticular implementation. The components 218-224 can comprise software,hardware, or both. For example, the components 218-224 can comprise oneor more instructions stored on a computer-readable storage medium andexecutable by processors of one or more computing devices. When executedby the one or more processors, the computer-executable instructions ofthe communication application 102 can cause the computing device 202 toperform the methods described herein. Alternatively, the components218-224 can comprise hardware, such as a special purpose processingdevice to perform a certain function or group of functions. Additionallyor alternatively, the components 218-224 can comprise a combination ofcomputer-executable instructions and hardware.

The access detector 218 can determine when a message has been accessedvia the messaging application 102. The access detector 218 can determinethat a message has been accessed when the user 104 interacts with themessaging application 102 in a manner to indicate that the user 104 hasseen the message. For example, the access detector 218 can determinethat a message has been accessed when the user 104 opens a GUI or otherinterface containing the message, when the user 104 begins to compose amessage in a thread containing the message, when the user accesses anotification indicating the receipt of the message, or when the user 104otherwise accesses the message.

Upon detecting that the user 104 has accessed a message, the messagingapplication 102 can send an indication to the communication server 106.As explained below, such indications can allow the messaging facilitator200 to alert or otherwise inform another messaging application (such asthe messaging application that sent the message) that the user 104 hasaccessed the message. Receipt of an indication from the messagingfacilitator 200 that a user has accessed a message can allow themessaging application 102 to provide, update, or modify a statusnotification associated with the user who accessed the message.

In addition to the access detector 218, the messaging application 102also includes a GUI generator 220. The GUI generator 220 may display(e.g., by way of a display screen associated with the computing device202) a GUI including an electronic messaging session. For example, theGUI may include a plurality of graphical objects that facilitate anelectronic messaging session among a plurality of participants (i.e.,the user 104 and one or more other participants). More particularly, theGUI generator 220 can direct the computing device 202 to display a groupof graphical objects that enable viewing an electronic messaging threadas explained in greater detail below. The electronic messaging threadcan include a plurality of messages sent and received among a pluralityof participants in the electronic messaging session.

A GUI updater 222 of the messaging application 102 can update thedisplay of an electronic messaging thread of the messaging application102. In particular, the GUI updater 222 can provide or modify thedisplay of a sent, delivered, and/or seen notification 102. Inparticular, upon receiving an indication that a message has been sent,delivered, and/or accessed the GUI updater can instruct the computingdevice 202 to display or update the display of a status notification.Additionally, the GUI updater 222 may also direct the computing device202 to display a graphical object within a displayed electronicmessaging thread indicating the date and/or time of access for eachparticipant in the session.

The message handler 224 may direct the sending and receiving of messagesto and from a communication server 106 over the course of an electronicmessaging session among a plurality of participants. The message handler224 may organize incoming and outgoing messages and direct the GUIgenerator 220 to display messages. Furthermore, the message handler 224can detect when the computing device 202 successfully sends a message.Upon detecting that the computing device 202 has sent a message, themessage handler 224 can send an indication or otherwise communicate tothe GUI updater 222 that the message was sent to allow the GUI updater222 to provide a sent notification.

The messaging application 102 can interact with a messaging facilitator200 to send and receive messages and other communications. FIG. 2illustrates a single messaging application 102 operating on a singlecomputing device 202 interacting with a single communication server 106with a single messaging facilitator 200. One of skill in the art willappreciate in light of the disclosure herein that the invention is notso limited. In alternative embodiments, the communication server 106 mayinteract with any number of communication devices 202 via the network108.

The system 100 a of the embodiment illustrated in FIG. 2 includes acommunication server 106 that hosts a network application 225 includinga messaging facilitator 200. In one or more embodiments of theinvention, the network application 225 comprises a social-networkingsystem 226. In other embodiment, the network application 225 maycomprise another type of application, including but not limited to ane-mail application, an SMS application, a search engine application, aninstant messaging application, or any number of other applications thatprovide for electronic messaging. In embodiments where the networkapplication 225 comprises a social-networking system 226, the networkapplication 225 may include a social graph module 228 for representingand analyzing a plurality of users and concepts. A node storage module230 of the social graph module 228 can store node information comprisingnodes for users, nodes for concepts, and nodes for items. An edgestorage module 232 of the social graph module 228 can store edgeinformation comprising relationships between nodes and/or actionsoccurring within the social-networking system 226. Further detailregarding social-networking systems, social graphs, edges, and nodes ispresented below with respect to FIG. 9.

The messaging facilitator 200 of the network application 225 cancomprise a server message handler 233, a status tracker 234, a statusindicator 236, and a message database 240. Each of the components234-240 of the messaging facilitator 200 can be in communication withone another using any suitable communication technologies. It will berecognized that although the components 234-240 of the messagingfacilitator 200 are shown to be separate in FIG. 2, any of components234-240 may be combined into fewer components, such as into a singlecomponent, or divided into more components as may serve a particularimplementation. The components 234-240 can comprise software, hardware,or both. For example, the components 234-240 can comprise one or moreinstructions stored on a computer-readable storage medium and executableby processors of one or more computing devices. When executed by the oneor more processors, the computer-executable instructions of themessaging facilitator 200 can cause the communication server 106 toperform the methods described herein. Alternatively, the components234-240 can comprise hardware, such as a special purpose processingdevice to perform a certain function or group of functions. Additionallyor alternatively, the components 234-240 can comprise a combination ofcomputer-executable instructions and hardware.

The server message handler 233 can process messages received fromcommunication applications 102. For example, the server message handler233 may be configured to interact with a message handler 224 of amessaging application 102. The server message handler 233 can act as adirector for messages sent back and forth among users in an electronicmessaging conversation. The server message handler 233 may receive amessage from messaging application 102, detect the intended recipient ofthe message, and send the message to the messaging application 102associated with the intended recipient.

Additionally, the server message handler 233 can also re-format orotherwise modify the content or format of a message based on themessaging protocol used by a destination communication device 202 or atype. As such, in one or more embodiments of the present invention themessaging facilitator can allow participants using differentcommunication platforms to exchange messages. For example, the servermessage handler 233 can receive a message in a first protocol (SMS, IM,XMPP, APNS, etc.), re-format the message into a second protocol, andsend the reformatted message to the intended recipient(s).

The status tracker 234 can track the status of the messages being sentto and from the communication application(s) 102. For example the statustracker 234 can identify when a message is received from a communicationapplication 102, is sent to a communication application 102, is accessedby a communication application 102, etc. For example, the status tracker234 can receive indications from messaging applications 102 (i.e., anaccess detector 218) regarding the status of messages. In particular,the status tracker 234 can receive an indication (such as a pushnotification) from an access detector 218 that a user 104 has accessed amessage. The status tracker 234 may also be configured to monitor thedate and time of the sending, receiving, delivering, and/or accessing ofmessages.

The status indicator 236 can send indications (such as pushnotifications) to communication application 102 to notify thecommunication application 102 of the status of messages. As mentionedabove, the communication application 102 can add, modify, or otherwisechange or update status notifications based on indications received fromthe status indicator 236. For example, the status indicator 236 can sendan indication to an access detector 218 of a communication application102 indicating that another user has accessed a message in a messagingthread in which the user 104 of the communication application 102 isparticipating. Furthermore, the status indicator 236 can sendindications to an access detector 218 that a message has been deliveredto an intended receipt.

The messaging facilitator 200 may also include a message database 240.The message database 240 may be configured to maintain message data 242representative of content of messages from electronic messaging sessionsamong a plurality of participants. The message database 240 may also beconfigured to maintain status data 244 representative of informationrelated to when a message was sent, delivered, or accessed and by whom.The message database 240 can thus provide an archive of messagingthreads, which the messaging facilitator 200 can provide to a user ondemand or once a user logs into the communication application 102 usinga new computing device.

Referring now to FIGS. 3A-5, various GUIs are illustrated showingaspects of one or more embodiments of the present invention. Forexample, FIGS. 3A-5 illustrate various view of GUIs that a messagingapplication 102 of one or more embodiments can provide to facilitateelectronic messaging. In particular, FIGS. 3A-5 illustrate statusnotification that the messaging application 102 can provide to notify auser 104 of the status of messages in a messaging thread.

FIG. 3A illustrates an example of a display of an electronic messaginggraphical user interface 300 (or simply “user interface 300”). Upon auser 104 opening the messaging application 102 on the communicationdevice 202 and selecting a conversation, the GUI generator 220 presentsa user with the display illustrated in FIG. 3A. As shown, the userinterface 300 includes a viewing area 302 displaying at least a portionof a communication thread 304. The communication thread 304 includes aplurality of messages 306 exchanged between the participants of aconversation. For longer communication threads a portion of thecommunication thread 304 can reside outside of a current viewing area302 of the user interface 300. To access older messages 306, a user canscroll or otherwise manipulate the user interface 300 to pull down olderportions of the communication thread 304.

In one or more embodiments, the user interface 300 can include messages306 arranged chronologically. For example, the user interface 300 candisplay more recent messages near a bottom 308 of the viewing area 302and less recent messages near a top 309 of the viewing area 302. Inparticular, FIG. 3A illustrates that the most recent message 306 a isdisplayed at the bottom 308 while the oldest message 306 b in theviewing area 302 is positioned near the top 309 of the communicationthread 304. As new messages are received, the GUI updater 222 canposition them at the bottom of the viewing area 302 and push the oldermessages beyond the top 309 of the viewing area 302.

In alternative embodiments, the user interface 300 can include morerecent messages near the 309 and less recent messages near a bottom 308of the viewing area 302. In still further embodiments, the userinterface 300 can display the messages in a horizontal arrangement withless recent messages near one side and more recent message near anopposing side, or vice versa.

In one or more embodiments the user interface 300 displays messages 306within the communication thread 304 in a manner that distinguishesmessages from the sender (i.e., user of the computing device 202) andmessages from the other participants in the conversation thread 304. Inparticular, the user interface 300 can give messages from the user afirst appearance and messages from other participants a second,differing appearance. For example, as shown in the user interface 300,messages 306 c, 306 c, 306 d, 306 f sent from the user are a first colorand are positioned proximate a first side 310 of the viewing area 302.On the other hand, messages 306 a, 306 b, 306 g, 306 h, 306 i are asecond color and are positioned proximate a second opposing side 312 ofthe viewing area 302. In alternative embodiments, the different messagescan be distinguished using other visual effects, such as, but notlimited to size, shape, position, color, etc.

In addition to the foregoing, the user interface 300 can includeparticipant notification elements that associate particular messageswith particular participants. For example, FIG. 3A illustrates that eachmessage sent from a participant other than the user can include aparticipant notification element adjacent 314 a, 314 b adjacent messages306 a, 306 b, 306 g, 306 j, 306 i. In particular, the user interface 300includes a first participant notification element 314 a adjacentmessages 306 a, 306 b, 306 i sent from a first participant. Similarly,the user interface 300 includes a second participant notificationelement 314 b adjacent both messages 306 g, 306 h sent from a secondparticipant.

The participant notification element 314 a, 314 b can comprise a name ofthe associated participant, a picture of the associated participant, apicture or animation selected by the associated participant, an icon, aglyph, or any other indicator suitable for differentiating oneparticipant from another. For example, FIG. 3A illustrates that theparticipant notification element 314 a, 314 b comprise social networkprofile pictures of the associated participants. As such, in at leastone embodiment, each participant or user of the messaging application102 can select their associated participant notification element.Additionally or alternatively, the graphical interface 300 can displaythe name or handle 316 a, 316 b of a give participant adjacent theirmessages.

In any event, the user interface 300 can use the placement,organization, orientation, and/or appearance to help the user understandthe respective sources and relative ages of the messages 306 display inthe user interface 300. Additionally, the user interface 300 can includeaccess notification elements 318 a-318 e to indicate which messages 306each participant has most recently accessed. In particular, the userinterface 300 can include an access notification element 318 a-318 e foreach participant in a given communication thread. The GUI updater 222can ensure that the access notification element 318 a-318 e for a givenparticipant adjacent the message 306 of the communication thread 304most recently accessed by the given participant. Thus, the accessnotification elements 318 a-318 e can indicate to the user whichparticipants have seen which messages in the communication thread.

For example, FIG. 3A illustrates that the user interface 300 includes afirst access notification element 318 a associated with the firstparticipant. The GUI updater 222 can maintain the first accessnotification element 318 a adjacent the message most recently accessedby the first participant. In the embodiment illustrated in FIG. 3A, themost recent message accessed by the first participant is message 306 a.The GUI updater 222 can leave the first access notification element 318a adjacent the message 306 a until the access detector 218 is notifiedthat the first participant has accessed a more recent message.

Additionally, the GUI updater 222 can place the access notificationelements adjacent the most recently accessed messages 306 regardless ofthe sender of the message 306. In other words, the access notificationelements are not limited to providing access or read confirmations formessages sent by the user of the computing device 202. In particular,the access notification elements can provide access or readconfirmations for any message accessed by a participant of thecommunication thread 304.

For example, the user interface 300 of FIG. 3A illustrates that thefirst access notification element 318 a associated with the firstparticipant is adjacent the most recent message 306 a, which happens tobe a message sent by the first participant. Thus, first accessnotification element 318 a indicates that the message 306 a sent by thefirst participant is the message most recently accessed by the firstparticipant. Along related lines, the user interface 300 illustratesthat the third access notification element 318 c is also adjacent themessage 306 a. Thus, the third access notification element 318 cindicates that neither the user nor the third participant, but ratheranother participant sent the message 306 a most recently accessed by athird participant.

While both the first and third access notification elements are adjacentthe most recent message 306 a in the communication thread 304, thepresent invention is not limited to providing access or readconfirmation of the most recent message in a communication thread.Indeed, the user interface 300 can indicate the last message 306accessed by each participant whether or not the message is the mostrecent message in the communication thread 304. For example, FIG. 3Aillustrates that the second, fourth and fifth access notificationelements 318 b, 318 d, 318 e are all adjacent messages 306 d, 306 e. 306b that are older (i.e., less recent) than the most recent message 306 ain the communication thread 304. As such, the access notificationelements can readily allow the user to determine the last messageaccessed by each participant in the communication thread 304.

In one or more embodiments the access notification elements are specificto a given participant. In other words, the access notification elementscan provide an indication of the particular participant with which thegiven access notification element is associated. For example, as shownby FIG. 3A the access notification elements 318 a, 318 c can comprise asmaller version of the participant notification element 314 a, 314 c. Inalternative embodiments the access notification elements can differ fromthe participant notification elements. In particular, the accessnotification elements can comprise a name or initials of the associatedparticipant, a picture of the associated participant, a picture oranimation selected by the associated participant, an icon, a glyph, orany other indicator suitable for differentiating one participant fromanother.

In addition to the access notification elements, the user interface 300can further include additional status notifications regarding one ormore messages. For example, the user interface 300 can include locationtags that indicate a geographic location from where a given message wassent. The geographic location can comprise a country, a city, or a moregranular location. Exemplary granular locations include addresses,places of interest, and other representations of geographic locations.

Additionally, the user interface 300 can include device tags thatindicate a type of device from which a given message was sent. Forexample, the device tags can indicate whether a given message was sentfrom a mobile device or a traditional personal computer. Alternativelyor additionally, the device tags can indicate a brand of device fromwhich a given message was sent.

Still further, FIG. 3A illustrates that the user interface 300 caninclude a status information line 320. The status information line caninclude any of the additional status notifications discussed above.Furthermore, as shown by FIG. 3A, in at least one embodiment, the statusinformation line 320 can include one or more time stamps that indicatesthe time (day and/or hour) at which a given message was assessed by oneor more participants. In one or more embodiments in order to reduceclutter of the user interface 300 any location tags, device tags, timestamps, or other supplementary access information can be initiallyhidden from view. Upon selection of a given message or accessnotification element, an associated location tag, device tag, timestamp, or other supplementary access information can appear in the userinterface 300.

As mentioned previously, the messaging application 102 can update theuser interface 300 as the messaging application 102 identifies changesin statuses of one or more of the messages 306. For example, FIG. 3Billustrates the user interface 300 after having been updated by the GUIupdater 222 in response to the access detector 218 receiving anindication from the status indicator 236 that the second participantaccessed the most recent message 306 a. In particular, a comparison ofFIG. 3A to FIG. 3B shows that the GUI updater 222 moved the secondstatus notification element 318 b from a position adjacent message 306 dto an updated position adjacent message 306 a.

The user interface 300 can further arrange multiple status notificationelements next to the same message 306 in the order in which theassociated participants accessed the message. For example, FIG. 3Billustrates that the GUI updater 222 added the second statusnotification element 318 b at the right side of the status notificationelement 318 c, 318 a. Thus, the user interface 300 can notify the userthe order in which various participants access or view a particularmessage. As shown by FIG. 3B, the status notification elements 318 c,318 a, 318 b next to message 306 a indicate that the third participantaccessed the message 306 a first, followed by the first participant, andfinally the third participant.

In addition to the foregoing, upon identifying a change in the status ofmost recent message 306 a (i.e., that the second participant accessedthe message 306 a), the GUI updater 222 can update the statusinformation line 320 associated with the message 306 a. For example,FIG. 3B illustrates that the GUI updater 222 can modify the time stampfrom a time in which the last participant (i.e., the first participant)accessed the message 306 a (i.e., yesterday at 3:30 as shown by FIG. 3A)to the time in which the second participant accessed the message 306 a(i.e., 4:21). Additionally, in one or more embodiments the statusinformation line 320 can include a time stamp indicating when eachparticipant accessed the message 306 a. The GUI updater 222 can modifyeach time stamp as participants access messages 306. In alternativeembodiments, when the status information line 320 includes other statusinformation (e.g., location or device tags), the GUI updater 222 canalso add, delete, update, or revise this additional information.

FIG. 3B further illustrates that the status notification elements 318 e,318 d, 318 c, 318 a remain unchanged (i.e., in the same positions as inFIG. 3A). In other words, the GUI updater 222 can update or move onlythe status notification elements corresponding to a status updatereceived from the access detector 222 or the status indicator 236. Alongrelated lines, the GUI updater 222 can leave time stamps associated whena participant accessed a particular message unchanged until theparticipant accesses a new message. Thus, the last message a participantaccessed can have a status notification element 318 and a time stampwhen the participant accessed the message. This can allow the user toreadily identify when and which messages a participant has accessed.Furthermore, in one or more embodiments the GUI updater 222 can updatethe user interface 300 in real time or substantially real time as themessaging application 102 becomes aware of status changes.

As mentioned previously, the user interface 300 can display new messagesas they are received. For example, FIG. 3C illustrates the display of anew message 306 j entered by the user of the computing device 202. Inparticular, the GUI updater 222 adds the new message 306 j to the bottomof the communication thread 304.

As part of processing the new message 306 j, the message handler 224 cansend the new message 306 j to the network application 225. Uponreceiving the new message 306 j, the server message handler 233 can sendor forward the new message 306 j to computing devices associated witheach of the participants in the communication thread 304. The computingdevices of the participants can each return delivery receipts to thecommunication server 106 upon receiving the new message 306 j. Uponsuccessful delivery, the communication server 106 can return a deliveryconfirmation to the computing device 202. In response to the receipt ofthe delivery confirmation, the GUI updater 222 can add a deliverynotification 322 to the communication thread 322 to notify the user thatthe new message 306 j was successfully delivered, as illustrated by FIG.3C.

In one or more embodiments, delivery notification 322 indicates that thenew message 306 j has been delivered to all intended participants (i.e.,accounts or devices associated with the participants) in theconversation. In alternative embodiments the delivery notification 322can indicate that the new message 306 j has been delivered to thecommunication server 106. In still further embodiments the deliverynotification 322 indicates that the new message 306 j has been deliveredto a least one of the participants.

In the embodiment illustrated in FIG. 3C, the delivery notification 322comprises a checkmark. One will appreciate in light of the disclosureherein that the present invention is not so limited. In alternativeembodiments the delivery notification 322 can comprise an indicatorother than a checkmark. For example, the delivery notification cancomprise a change in the appearance or position of the message 306 j, anicon other than a checkmark, a picture or animation, a glyph, or anyother indicator suitable for indicating the delivery of a message.

In alternative embodiments rather than a delivery notification 322, theGUI updater 222 can add a sent notification to the communication thread322 to notify the user that the new message was successfully sent. Thesent notification can appear or function similar to the deliverynotification. In alternative embodiments, the GUI updater 22 can provideboth a sent notification and a delivery notification. For example, thesent notification can comprise a first check mark or other icon and thedelivery notification can comprise a second check mark or othernotification.

As shown by FIG. 3C, even though the new message 306 j has been send ordelivered, no participants have accessed the new message 306 j.Accordingly, the GUI updater 222 has not moved any access notificationelements 318 a-318 e adjacent the new message 306 j. Similarly, the GUIupdater 222 has not added or associated a status information line withthe new message 306 j.

FIG. 3C illustrates that the access notification element 318 e is nolonger within the viewing area 302. In particular, due to the additionof the new message 306 j to the communication thread 304, the GUIupdater 222 has moved the message 306 b beyond the top 309 of theviewing area 302. As the message 306 b is the last message accessed bythe fifth participant, the access notification element 318 e remainsadjacent the message 306 b, and thus, is no longer within the view area302. If the user forgets or otherwise desires to confirm which was thelast message accessed by the fifth participant, the user can scroll thecommunication thread 304 downward toward to re-expose less recentmessages. For example, the user can modify the viewing area 304 toreturn to the view shown in FIG. 3B to see where the access notificationelement 318 e is located.

In alternative embodiments, when the last message accessed by a givenparticipant is no longer within the viewing area 302, the accessnotification element 318 e can be positioned at the top of the viewingarea 302 to indicate that the last message the participant accessed isfurther up in the communication thread 304. When the user taps orotherwise selects the access notification positioned at the top of theviewing area 302, the GUI updater 222 can automatically adjust theviewing area 302 to show the position in the communication thread 304including the message last accessed by the participant. In other words,upon detecting a user selection of an access notification element 318 epositioned at the top of the viewing area 302, the GUI updater 222 canautomatically scroll the communication thread 304 so that the viewingarea 302 shows the last message accessed by the participant.

As mentioned previously, the communication application 102 cancontinuously update the user interface 300 upon receiving indications ofchanges in the status of messages. For the messaging application 102 canupdate the user interface 300 as the messaging application 102identifies changes in statuses of one or more of the messages 306. Forexample, FIG. 3D illustrates the user interface 300 after having beenupdated by the GUI updater 222 in response to the access detector 218receiving an indication that the first participant accessed the message306 j. In particular, a comparison of FIG. 3D to FIG. 3C shows that theGUI updater 222 moved the first status notification element 318 a from aposition adjacent message 306 a to an updated position adjacent message306 j. Similarly, FIG. 3D illustrates that the GUI updater 222 has addeda status information line 320 indicating the time at which the firstparticipant accessed the message 306 j.

FIG. 3E illustrates the user interface 300 after having been updated bythe GUI updater 222 in response to the access detector 218 receiving anindication that the fourth participant accessed the message 306 j. Inparticular, a comparison of FIG. 3D to FIG. 3C shows that the GUIupdater 222 moved the fourth access notification element 318 d from aposition adjacent message 306 e to an updated position adjacent message306 j. One will appreciate that if a participant accesses multiplemessages at the same time, the GUI updater 222 can move the associatedaccess notification element directly to the most recent message accessedby the participant. Thus, in the context of FIG. 3E, the GUI updater 222can move the fourth access notification element 318 d directly frommessage 306 e to message 306 j, skipping over the messages betweenmessage 306 e and message 306 j.

Eventually each participant in the communication thread 304 can accessor otherwise view the message 306 j. As shown by FIG. 3F, the GUIupdater 222 can move each of the access notification elements 318 a-318e adjacent the message 306 j to reflect that the message 306 j is thelatest message accessed by each participant. Thus, the GUI updater 222can move the access notification element 306 e from beyond the top 309of the viewing area 302 back into the viewing area 304.

Furthermore, the GUI updater 222 can update the status information line320 to provide an indication that each participant has seen the message306 j. For example, FIG. 3F illustrates that the GUI updater 222 haschanged the status information line 320 to say “Seen by everyone.” Inalternative embodiments, the GUI updater 222 can provide some othermessage, icon, animation or other indication to signal that eachparticipant has accessed the message 306 j. One will appreciate in lightof the disclosure herein that such a notification can prevent the userfrom scrolling through the entire communication thread 304 to ensurethat each participant has accessed the message.

Although not illustrated in FIGS. 3A-3F, each time a participantaccesses a new message in the communication thread 304, the GUI updater222 can animate the movement of the access notification elements. Forexample, as an access notification element moves to a more recentmessage, the access notification element may appear to bounce or haveanother animation. Furthermore, the GUI updater 222 can control thespeed as well as the size of the bounce to reflect the length of travelin order to reach a message. The animation may also include sounds.

In one or more embodiments, the animation and/or sound associated withthe movement of a particular access notification element can be specificto the participant associated with the access notification element. Forexample, the participant or the user can select an animation or sound toassociate with a given access notification element. Thus, the animationand/or sound associated with an access notification element can indicateto the user who has seen a given message in addition to the appearanceof the access notification element.

As mentioned previously the present invention is not limited toproviding group messaging conversations or providing only accessnotifications. Indeed, one or more embodiments of the present inventioninclude providing additional or alternative status notifications ingroup or non-group conversations. For example, FIGS. 4A-4F illustrateanother embodiment in which the communication application 102 providessent and delivery notifications.

FIG. 4A illustrates an example of a display of an electronic messaginggraphical user interface 400 (or simply “user interface 400”). Upon auser 104 opening the messaging application 102 on the communicationdevice 202 and selecting a conversation, the GUI generator 220 presentsa user with the display illustrated in FIG. 4A. As shown, the userinterface 400 includes a viewing area 402 displaying at least a portionof a communication thread 404. The communication thread 404 includes aplurality of messages 406 exchanged between a co-participant and a userof the communication device 202.

As with the previous examples, the communication thread 404 is displayedwith the newest messages added to the bottom of the communication thread404. As each new message is added to the communication thread 404, theGUI updater 222 moves older messages up the communication thread 404until the oldest messages are no longer visible within the communicationthread 404. The user interface 400 may include functionality that allowsthe user to scroll up and down the communication thread 404 such thatthe user may read all the messages in the communication thread 404. InFIG. 4A, the newest message 406 b is from the co-participant and isdisplayed at the bottom of the communication thread 404.

In the communication thread 404, the co-participant is the secondparticipant from the communication thread 304 shown in FIGS. 3A-3F.Thus, the user interface 400 can include the second participantnotification element 314 b adjacent messages from the co-participant.Similarly, the user interface includes the access notification element318 b adjacent the most recent message 406 b accessed by theco-participant.

In one or more embodiments, the user interface of the messagingapplication can position access notification elements adjacent the mostrecent messages accessed or seen by a participant regardless of whetherthe participant sent the message, as explained above in relation to FIG.3A. Alternatively, the user interface of the messaging application canposition access notification elements adjacent the most recent messagesaccessed or seen by a participant that are sent by someone other thanthe participant. For example, FIG. 4A illustrates that the accessnotification element 318 b is adjacent message 406 a sent by the userrather than adjacent message 406 b sent by the co-participant.

Also shown in FIG. 4A, the user interface 400 may include other featuressuch as a navigation bar 407 and an input bar 409. For example, as shownin FIG. 4A, the navigation bar 407 may include selectable options toinitiate a phone call with a participant, navigate between differentconversations, or access additional information. The input bar 409 mayinclude a message input area 411 as well as other interactive elementsfor attaching files, images, icons, or other media, as well as aselectable send option 413.

In one or more embodiments, upon user selection of the message inputarea 411, the user interface 400 can display one or more input optionsto allow the user to provide a message. For example, FIG. 4A illustratesthat the user interface 400 can display a touch keyboard. It will beunderstood that the input may be any other means suitable for inputtingmessages for a communication session such as those describe below inrelation to FIG. 8.

In FIG. 4B, the user inputs a message, “Yup,” into the message inputarea 411. The selectable send option 413 may include functionality tobecome activated when a message is inputted into the message input area411. This functionality prevents the user from sending a blank messageto the co-user in the communication session. The user may be alerted tothe activation of the selectable send option 413 when the selectablesend option 413 changes color. As shown in FIG. 4A, the selectable sendoption 413 is a dark color as a message has been input into the messageinput area 411. In contrast, FIGS. 4B-4F illustrate the message inputarea 411 in a light or grey-out color. It will be understood that theactivation of the selectable send option 413 may be indicated in anysuitable method, such as via a sound, via an animation, etc.

After inputting a message into the message input area 411, the user mayselect the selectable send option 413. Upon selection of the messageinput area 411, the GUI updater 222 can clear the message from themessage input area 411 and add the message to the communication thread404, as shown in FIG. 4B. FIG. 4B shows a series of messages 406 c, 406d, 406 e input by the user. Additionally, after selection of theselectable send option 413, the message is handed off to the messagehandler 224, which in turn forwards the message to the server messagehandler 233.

In order to provide indications of the status of the messages 406 c-406e, the user interface 400 can present the messages with variousappearances or positions. For example, FIG. 4B illustrates that themessages 406 c-406 e have a first appearance (i.e., a gray color) toindicate that the messages have not been sent from the computing device202 or are in the process of being sent. One will appreciate thatdepending on the user's computing device 202 and the network 108 thecomputing device 202 is operating on, the messages 406 c-406 e may besent before or at the same time the messages 406 c-406 e are added tothe communication thread 404. Alternatively, as shown by FIG. 4B, theremay be a delay between the addition of the messages 406 c-406 e to thecommunication thread 404 and the sending of the messages from thecomputing device 202.

Upon the message handler 224 successfully sending a message from thecomputing device 202, the GUI updater 222 can provide a sentnotification. In particular, the GUI updater 222 can change theappearance or position of the message. For example, FIG. 3C illustratesthat the GUI updater 222 has changed the message 406 c from a firstcolor (grey) to a second color (black) to signify the message has beensuccessfully sent. As shown by FIG. 4C, the second message 406 d andthird message 406 e have yet to send as indicated by their lightercolor.

One will appreciate in light of the disclosure herein that altering theappearance of the message, opposed to adding an additional graphicalelement or icon, can reduce clutter of the user interface 400. Whenusing smaller computing devices 202, such as the mobile phone shown inFIG. 4C or other hand held devices, the display area may be limited.Thus, providing notifications by changing the appearance of a messageand help conserve the display area and otherwise provide a cleaner userexperience.

In alternative embodiments, the GUI updater 222 can change the size ofthe message, the position, or otherwise modify the appearance of themessage to indicate a change in the status of the message. For example,the GUI updater 222 can change the size of the message from small tofull size or vice versa to indicate a change in status. Morespecifically, the GUI updater can provide unsent messages with a firstsize, sent messages with a second size, and delivered messages with athird size. Alternatively, the GUI updater 222 can change the positionand/or orientation of the message to indicate a change in status. Morespecifically, the GUI updater can position unsent messages in the lowerleft position of the viewing area 402, sent messages in the lower middleportion of the viewing area 402, and delivered messages in the lowerright side of the viewing area 402. In any event, the GUI updater 222can modify the appearance of a message to indicate a status of themessage.

Alternatively, the GUI updater 222 can provide the message with ananimation to indicate a change in the status of the message. Forexample, the GUI updater 222 can act as a status bar that completes asthe message is sent. Thus, if the message is unsent only a portion ofthe message appears in the communication thread 404 or the messageflashes or bounces until the message is sent.

FIG. 4C further illustrates that the messaging application can providean indication that the message 406 c has been successfully read ordelivered. For example, as explained above in relation to FIG. 3C, uponthe message 406 c being successfully read or delivered, the GUI updater222 can provide a read or delivery notification 422. In particular, FIG.3C illustrates that the read or delivery notification comprises acheckmark. Alternatively, the GUI updater 222 can change the appearanceof the message from a second appearance to a third appearance. Forexample, the GUI updater 222 can change the color of the message 406 cfrom the second color (black) to a third color such as blue or anothercolor different than the color used to indicate unsent or sent messages.

FIGS. 4D and 4E illustrate that the GUI updater 222 can provide thestatus notifications on a per message or per status change basis. Inother words, the GUI updater 222 can provide a notification upondetection of a change of the status of the message. Although not shown,the movement of the delivery notification 422 down the communicationthread 404 may be accompanied with animation and/or sounds.

FIG. 4E illustrates that the first message 406 c, the second message 406d, and the third message 406 e have all been sent, as indicated by theirchange in color. Additionally, FIG. 4E illustrate that the messages 406c-406 e have also been successfully delivered to the co-participant, asindicated by the delivery notification 422 adjacent to the third message406 e. FIG. 4E further illustrates that the co-participant has not yetaccessed any of the messages 406 c-406 e. This is indicated via theposition of the access notification element 318 b being positionedadjacent electronic message 406 a. FIG. 4F, on the other hand,illustrates that the co-participant has seen all three messages 406c-406 e based on the updated position access notification element 318 bnext to the last message 406 e.

FIGS. 3A-4F all include user interfaces including a portion of a singlecommunication tread in which a status of a message can be provided to auser. The present invention however is not so limited. For example, oneor more embodiments can provide status notifications in other userinterfaces of the messaging application. For example, FIG. 5 illustratesa user interface 500 that includes a listing 505 of variouscommunication thread summaries 504 a, 504 c, etc.

Each communication tread summary 504, 504 b can include informationregarding or taken from a corresponding communication thread. Forexample, communication summaries can include a participant indicator514, a thread excerpt 515, a conversation or thread title 516, andstatus notification 517. The participant indicator 514 may be one ormore indications of the identity of the one or more participants in thatcommunication thread. If the conversation thread is between the user anda single co-participant, the participant indicator 514 a can include asingle indicator. If the conversation thread includes multipleparticipants, the participant indicator 514 b can include a plurality ofparticipant indicators. As shown, the participant indicator 514 may bemade of a photograph, icon, or other graphical element associated withor chosen by the user or the participant.

The thread excerpt 515 can comprise at least a portion of the mostrecent message in the communication thread. The thread excerpt 515 canprovide a brief reminder to the user of where a particular communicationthread left off. The thread excerpt 515 may be limited to a specificnumber of characters. The title 516 can comprise a name of theconversation provided by one of the participants. Alternatively, thetitle 516 can comprise the names of one or more of the participants ifno title is provided.

The status notification 517 may notify the user of a status of theconversation or a latest message in the communication thread 504 a. Forexample, the status notification can indicate that every participant ina communication thread has accessed the most recent message in thatcommunication thread. The status notification 517 may be an icon 517, aword such as “seen” 517 a, or other indicator suitable for communicatinga status of the communication thread or a message therein.

FIGS. 1-5, the corresponding text, and the examples, provide a number ofdifferent systems, device, and user interface for providing messagestatus notifications. In addition to the foregoing, embodiments of thepresent invention also can be described in terms of flowchartscomprising acts and steps in a method for accomplishing a particularresult. For example, FIGS. 6 and 7 illustrate flowcharts of exemplarymethods in accordance with one or more embodiments of the presentinvention. The methods described in relation to FIGS. 6 and 7 may beperformed with less or more steps/acts or the steps/acts may beperformed in differing orders. Additionally, the steps/acts describedherein may be repeated or performed in parallel with one another or inparallel with different instances of the same or similar steps/acts.

FIG. 6 illustrates a flowchart of one exemplary method 600 of providingstatus notifications during electronic messaging. In particular, FIG. 6illustrates that method 600 can include an act 602 of providing agraphical user interface 300 comprising a communication thread 304including a first access notification element 318 a associated with afirst participant and a second notification element 318 b associatedwith a second participant. For example, act 600 can involve providing auser interface 300 including a communication thread 304 including aplurality of electronic messages 306 exchanged between a user, a firstparticipant, and a second participant.

Method 600 can also include an act 604 of maintaining the firstnotification element 314 a adjacent an electronic message 306 a mostrecently accessed by the first participant. For example, act 604 caninvolve moving the first access notification element 318 a from a firstposition adjacent a previously accessed electronic message 306 a to asecond position adjacent the additional electronic message 306 j basedon identifying that the first participant has accessed the additionalelectronic message 306 j. The method 600 can also involve moving thefirst access notification element 318 a based on identifying that thefirst participant has accessed the additional electronic message 306 j.

FIG. 6 further illustrates that method 600 can include an act 606 ofmaintaining the second notification element 314 b adjacent an electronicmessage 306 d most recently accessed by the second participant. Forexample, act 606 can involve leaving the second access notificationelement 318 b adjacent an electronic message 306 d previous accessed bythe second participant despite the adding of an additional electronicmessage 306 j to the communication thread 304. Act 606 can furtherinvolve leaving the second access notification 318 b adjacent anelectronic message 306 d previous accessed by the second participantdespite moving for the first access notification element 318 a from thefirst position to the second position. Act 606 can further involveidentifying that the second participant has accessed the additionalelectronic message 306 j. Act 606 can accordingly involve moving thesecond access notification element 318 b from adjacent the electronicmessage 306 d previously accessed by the second participant to aposition adjacent the additional electronic message 306 j based onidentifying that the second participant has accessed the additionalelectronic message 306 j.

Method 600 can further involve receiving an input from the user of theadditional electronic message 306 j via the graphical user interface300. Method 600 can also involve displaying the additional electricmessage 406 c with a first appearance in the communication thread.Additionally, method 600 can involve determining a change in a status ofthe additional electronic message 406 c and changing the firstappearance of the additional electronic message 406 c to a secondappearance based on the determination that the change in the status ofthe additional electronic message 406 c. Determining the change in thestatus of the additional electronic message 406 can involve determiningthat the additional electronic message 406 c was successfully sent ordelivered. Changing the first appearance of the additional electronicmessage 406 c to the second appearance can involve changing a color orthe additional electronic message 406 c.

Referring now to FIG. 7, a flowchart of one exemplary method 700 ofproviding access notifications during electronic messaging isillustrated. As shown, the method 700 can include an act 702 ofproviding a graphical user interface 300 comprising a first accessnotification 318 b positioned proximate an electronic message 306 d, 406a accessed by the first participant. More specifically, act 702 caninvolve providing a communication thread 300, 400 including a pluralityof electronic messages 306, 406 exchanged between a user and a firstparticipant. Furthermore, act 702 can involve persistently including thefirst access notification 318 b in the communication thread 300, 400.

Method 700 also includes an act 704 of identifying that the firstparticipant has accessed an additional electronic message 306 i, 406 b.In particular, act 704 can involve receiving an indication from acommunication server that first participant has accessed the additionalelectronic message 306 i, 406 b. Method 700 can also involve moving thefirst access notification 318 b from proximate the electronic message306 d, 406 a accessed by the first participant to adjacent theadditional electronic message 306 i, 406 b.

Embodiments of the present invention may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentinvention also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In particular, one or more of the processes described hereinmay be implemented at least in part as instructions embodied in anon-transitory computer-readable medium and executable by one or morecomputing devices (e.g., any of the media content access devicesdescribed herein). In general, a processor (e.g., a microprocessor)receives instructions, from a non-transitory computer-readable medium,(e.g., a memory, etc.), and executes those instructions, therebyperforming one or more processes, including one or more of the processesdescribed herein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the invention can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be implemented in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed at a processor, cause a general purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed on ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the invention. Thecomputer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the invention may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The inventionmay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the invention can also be implemented in cloud computingenvironments. In this description, “cloud computing” is defined as amodel for enabling on-demand network access to a shared pool ofconfigurable computing resources. For example, cloud computing can beemployed in the marketplace to offer ubiquitous and convenient on-demandaccess to the shared pool of configurable computing resources. Theshared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Software as a Service (“SaaS”), Platform as a Service(“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computingmodel can also be deployed using different deployment models such asprivate cloud, community cloud, public cloud, hybrid cloud, and soforth. In this description and in the claims, a “cloud-computingenvironment” is an environment in which cloud computing is employed.

FIG. 8 illustrates, in block diagram form, an exemplary computing device800 that may be configured to perform one or more of the processesdescribed above. One will appreciate that the client device 202 and thecommunication server 106 can comprise implementations of the computingdevice 800. As shown by FIG. 8, the computing device can comprise aprocessor 802, memory 804, a storage device 806, an I/O interface 808,and a communication interface 810. While an exemplary computing device800 is shown in FIG. 8, the components illustrated in FIG. 8 are notintended to be limiting. Additional or alternative components may beused in other embodiments. Furthermore, in certain embodiments, acomputing device 800 can include fewer components than those shown inFIG. 8. Components of computing device 800 shown in FIG. 8 will now bedescribed in additional detail.

In particular embodiments, processor(s) 802 includes hardware forexecuting instructions, such as those making up a computer program. Asan example and not by way of limitation, to execute instructions,processor(s) 802 may retrieve (or fetch) the instructions from aninternal register, an internal cache, memory 804, or a storage device806 and decode and execute them. In particular embodiments, processor(s)802 may include one or more internal caches for data, instructions, oraddresses. As an example and not by way of limitation, processor(s) 802may include one or more instruction caches, one or more data caches, andone or more translation lookaside buffers (TLBs). Instructions in theinstruction caches may be copies of instructions in memory 804 orstorage 806.

The computing device 800 includes memory 804, which is coupled to theprocessor(s) 802. The memory 804 may be used for storing data, metadata,and programs for execution by the processor(s). The memory 804 mayinclude one or more of volatile and non-volatile memories, such asRandom Access Memory (“RAM”), Read Only Memory (“ROM”), a solid statedisk (“SSD”), Flash, Phase Change Memory (“PCM”), or other types of datastorage. The memory 804 may be internal or distributed memory.

The computing device 800 includes a storage device 806 includes storagefor storing data or instructions. As an example and not by way oflimitation, storage device 806 can comprise a non-transitory storagemedium described above. The storage device 806 may include a hard diskdrive (HDD), a floppy disk drive, flash memory, an optical disc, amagneto-optical disc, magnetic tape, or a Universal Serial Bus (USB)drive or a combination of two or more of these. Storage device 806 mayinclude removable or non-removable (or fixed) media, where appropriate.Storage device 806 may be internal or external to the computing device800. In particular embodiments, storage device 806 is non-volatile,solid-state memory. In particular embodiments, Storage device 806includes read-only memory (ROM). Where appropriate, this ROM may be maskprogrammed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these.

The computing device 800 also includes one or more input or output(“I/O”) devices/interfaces 808, which are provided to allow a user toprovide input to (such as user strokes), receive output from, andotherwise transfer data to and from the computing device 600. These I/Odevices/interfaces 808 may include a mouse, keypad or a keyboard, atouch screen, camera, microphone, optical scanner, network interface,modem, other known I/O devices or a combination of such I/Odevices/interfaces 808. The touch screen may be activated with a stylusor a finger.

The I/O devices/interfaces 808 may include one or more devices forpresenting output to a user, including, but not limited to, a graphicsengine, a display (e.g., a display screen), one or more output drivers(e.g., display drivers), one or more audio speakers, and one or moreaudio drivers. In certain embodiments, devices/interfaces 808 isconfigured to provide graphical data to a display for presentation to auser. The graphical data may be representative of one or more graphicaluser interfaces and/or any other graphical content as may serve aparticular implementation.

The computing device 800 can further include a communication interface810. The communication interface 810 can include hardware, software, orboth. The communication interface 810 can provide one or more interfacesfor communication (such as, for example, packet-based communication)between the computing device and one or more other computing devices 800or one or more networks. As an example and not by way of limitation,communication interface 810 may include a network interface controller(NIC) or network adapter for communicating with an Ethernet or otherwire-based network or a wireless NIC (WNIC) or wireless adapter forcommunicating with a wireless network, such as a WI-FI.

This disclosure contemplates any suitable network and any suitablecommunication interface 810. As an example and not by way of limitation,computing device 800 may communicate with an ad hoc network, a personalarea network (PAN), a local area network (LAN), a wide area network(WAN), a metropolitan area network (MAN), or one or more portions of theInternet or a combination of two or more of these. One or more portionsof one or more of these networks may be wired or wireless. As anexample, computing system 600 may communicate with a wireless PAN (WPAN)(such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAXnetwork, a cellular telephone network (such as, for example, a GlobalSystem for Mobile Communications (GSM) network), or other suitablewireless network or a combination thereof. Computing device 800 mayinclude any suitable communication interface 810 for any of thesenetworks, where appropriate.

The computing device 800 can further include a bus 812. The bus 812 cancomprise hardware, software, or both that couples components ofcomputing device 800 to each other. As an example and not by way oflimitation, bus 812 may include an Accelerated Graphics Port (AGP) orother graphics bus, an Enhanced Industry Standard Architecture (EISA)bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, anIndustry Standard Architecture (ISA) bus, an INFINIBAND interconnect, alow-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture(MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express(PCIe) bus, a serial advanced technology attachment (SATA) bus, a VideoElectronics Standards Association local (VLB) bus, or another suitablebus or a combination thereof.

The computing device 202 and/or the messaging application 102 cancommunicate with the communication server 106 using any number ofvarious protocols. In other words, the messages can comprise a number ofdifferent formats or protocols. For example, computing device 202 and/orthe messaging application 102 can communicate with the communicationserver 106 using the Transmission Control Protocol (“TCP”), InternetProtocol (“IP”), File Transfer Protocol (“FTP”), Telnet, HypertextTransfer Protocol (“HTTP”), Hypertext Transfer Protocol Secure(“HTTPS”), Session Initiation Protocol (“SIP”), Simple Object AccessProtocol (“SOAP”), Extensible Mark-up Language (“XML”) and variationsthereof, Simple Mail Transfer Protocol (“SMTP”), Real-Time TransportProtocol (“RTP”), User Datagram Protocol (“UDP”), Global System forMobile Communications (“GSM”) technologies, Code Division MultipleAccess (“CDMA”) technologies, Time Division Multiple Access (“TDMA”)technologies, Short Message Service (“SMS”), Multimedia Message Service(“MMS”), radio frequency (“RF”) signaling technologies, Long TermEvolution (“LTE”) technologies, wireless communication technologies,in-band and out-of-band signaling technologies, and other suitablecommunications networks and technologies.

As mentioned above, the network application 226 can comprise asocial-networking system. A social-networking system may enable itsusers (such as persons or organizations) to interact with the system andwith each other. The social-networking system may, with input from auser, create and store in the social-networking system a user profileassociated with the user. The user profile may include demographicinformation, communication-channel information, and information onpersonal interests of the user. The social-networking system may also,with input from a user, create and store a record of relationships ofthe user with other users of the social-networking system, as well asprovide services (e.g. wall posts, photo-sharing, event organization,messaging, games, or advertisements) to facilitate social interactionbetween or among users

The social-networking system may store records of users andrelationships between users in a social graph comprising a plurality ofnodes and a plurality of edges connecting the nodes. The nodes maycomprise a plurality of user nodes and a plurality of concept nodes. Auser node of the social graph may correspond to a user of thesocial-networking system. A user may be an individual (human user), anentity (e.g., an enterprise, business, or third party application), or agroup (e.g., of individuals or entities). A user node corresponding to auser may comprise information provided by the user and informationgathered by various systems, including the social-networking system.

For example, the user may provide his or her name, profile picture, cityof residence, contact information, birth date, gender, marital status,family status, employment, educational background, preferences,interests, and other demographic information to be included in the usernode. Each user node of the social graph may have a corresponding webpage (typically known as a profile page). In response to a requestincluding a user name, the social-networking system can access a usernode corresponding to the user name, and construct a profile pageincluding the name, a profile picture, and other information associatedwith the user. A profile page of a first user may display to a seconduser all or a portion of the first user's information based on one ormore privacy settings by the first user and the relationship between thefirst user and the second user.

A concept node may correspond to a concept of the social-networkingsystem. For example, a concept can represent a real-world entity, suchas a movie, a song, a sports team, a celebrity, a group, a restaurant,or a place or a location. An administrative user of a concept nodecorresponding to a concept may create or update the concept node byproviding information of the concept (e.g., by filling out an onlineform), causing the social-networking system to associate the informationwith the concept node. For example and without limitation, informationassociated with a concept can include a name or a title, one or moreimages (e.g., an image of cover page of a book), a web site (e.g., anURL address) or contact information (e.g., a phone number, an emailaddress). Each concept node of the social graph may correspond to a webpage. For example, in response to a request including a name, thesocial-networking system can access a concept node corresponding to thename, and construct a web page including the name and other informationassociated with the concept.

An edge between a pair of nodes may represent a relationship between thepair of nodes. For example, an edge between two user nodes can representa friendship between two users. For another example, thesocial-networking system may construct a web page (or a structureddocument) of a concept node (e.g., a restaurant, a celebrity),incorporating one or more selectable buttons (e.g., “like”, “check in”)in the web page. A user can access the page using a web browser hostedby the user's client device and select a selectable button, causing theclient device to transmit to the social-networking system a request tocreate an edge between a user node of the user and a concept node of theconcept, indicating a relationship between the user and the concept(e.g., the user checks in a restaurant, or the user “likes” acelebrity).

As an example, a user may provide (or change) his or her city ofresidence, causing the social-networking system to create an edgebetween a user node corresponding to the user and a concept nodecorresponding to the city declared by the user as his or her city ofresidence. In addition, the degree of separation between any two nodesis defined as the minimum number of hops required to traverse the socialgraph from one node to the other. A degree of separation between twonodes can be considered a measure of relatedness between the users orthe concepts represented by the two nodes in the social graph. Forexample, two users having user nodes that are directly connected by anedge (i.e., are first-degree nodes) may be described as “connectedusers” or “friends.” Similarly, two users having user nodes that areconnected only through another user node (i.e., are second-degree nodes)may be described as “friends of friends.”

A social-networking system may support a variety of applications, suchas photo sharing, on-line calendars and events, gaming, instantmessaging, and advertising. For example, the social-networking systemmay also include media sharing capabilities. Also, the social-networkingsystem may allow users to post photographs and other multimedia files toa user's profile page (typically known as “wall posts” or “timelineposts”) or in a photo album, both of which may be accessible to otherusers of the social-networking system depending upon the user'sconfigured privacy settings. The social-networking system may also allowusers to configure events. For example, a first user may configure anevent with attributes including time and date of the event, location ofthe event and other users invited to the event. The invited users mayreceive invitations to the event and respond (such as by accepting theinvitation or declining it). Furthermore, the social-networking systemmay allow users to maintain a personal calendar. Similarly to events,the calendar entries may include times, dates, locations and identitiesof other users.

FIG. 9 illustrates an example network environment of a social-networkingsystem. In particular embodiments, a social-networking system 902 maycomprise one or more data stores. In particular embodiments, thesocial-networking system 902 may store a social graph comprising usernodes, concept nodes, and edges between nodes as described earlier. Eachuser node may comprise one or more data objects corresponding toinformation associated with or describing a user. Each concept node maycomprise one or more data objects corresponding to informationassociated with a concept. Each edge between a pair of nodes maycomprise one or more data objects corresponding to informationassociated with a relationship between users (or between a user and aconcept, or between concepts) corresponding to the pair of nodes.

In particular embodiments, the social-networking system 902 may compriseone or more computing devices (e.g., servers) hosting functionalitydirected to operation of the social-networking system. A user of thesocial-networking system 902 may access the social-networking system 902using a client device such as client device 906. In particularembodiments, the client device 906 can interact with thesocial-networking system 1202 through a network 904.

The client device 906 may be a desktop computer, laptop computer, tabletcomputer, personal digital assistant (PDA), in- or out-of-car navigationsystem, smart phone or other cellular or mobile phone, or mobile gamingdevice, other mobile device, or other suitable computing devices. Clientdevice 906 may execute one or more client applications, such as a webbrowser (e.g., Microsoft Windows Internet Explorer, Mozilla Firefox,Apple Safari, Google Chrome, Opera, etc.) or a native or special-purposeclient application (e.g., Facebook for iPhone or iPad, Facebook forAndroid, etc.), to access and view content over a network 904.

Network 904 may represent a network or collection of networks (such asthe Internet, a corporate intranet, a virtual private network (VPN), alocal area network (LAN), a wireless local area network (WLAN), acellular network, a wide area network (WAN), a metropolitan area network(MAN), or a combination of two or more such networks) over which clientdevices 906 may access the social-networking system 902.

While these methods, systems, and user interfaces utilize both publiclyavailable information as well as information provided by users of thesocial-networking system, all use of such information is to beexplicitly subject to all privacy settings of the involved users and theprivacy policy of the social-networking system as a whole.

In the foregoing specification, the invention has been described withreference to specific exemplary embodiments thereof. Various embodimentsand aspects of the invention(s) are described with reference to detailsdiscussed herein, and the accompanying drawings illustrate the variousembodiments. The description above and drawings are illustrative of theinvention and are not to be construed as limiting the invention.Numerous specific details are described to provide a thoroughunderstanding of various embodiments of the present invention.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the invention is, therefore, indicatedby the appended claims rather than by the foregoing description. Allchanges that come within the meaning and range of equivalency of theclaims are to be embraced within their scope.

I claim:
 1. A method comprising: providing, to a user and by at leastone computer processor, a communication thread comprising: achronologically ordered plurality of electronic messages exchangedbetween the user, a first participant, and a second participant, a firstaccess notification element associated with the first participant, and asecond access notification element associated with the secondparticipant; persistently maintaining, by the at least one computerprocessor, the first access notification element adjacent to anelectronic message within the communication thread most recentlyaccessed by the first participant as new electronic messages are sentand received between the user, the first participant, and the secondparticipant; and persistently maintaining, by the at least one computerprocessor, the second access notification element adjacent to anelectronic message within the communication thread most recentlyaccessed by the second participant as new electronic messages are sentand received between the user, the first participant, and the secondparticipant.
 2. The method as recited in claim 1, further comprising:adding an additional electronic message to the conversation thread; andidentifying that the first participant has accessed the additionalelectronic message.
 3. The method as recited in claim 2, furthercomprising: receiving an input from the user of the additionalelectronic message via the graphical user interface; displaying theadditional electronic message with a first appearance in thecommunication thread; determining a change in a status of the additionalelectronic message; and changing the first appearance of the additionalelectronic message to a second appearance based on the determinationthat the change in the status of the additional electronic message. 4.The method as recited in claim 3, wherein: determining the change in thestatus of the additional electronic message comprises determining thatthe additional electronic message was successfully sent or delivered;and changing the first appearance of the additional electronic messageto the second appearance comprises changing a color or the additionalelectronic message.
 5. The method as recited in claim 2, whereinpersistently maintaining the first access notification element adjacentto the electronic message within the communication thread most recentlyaccessed by the first participant as new electronic messages are sentand received between the user, the first participant, and the secondparticipant comprises moving the first access notification element froma first position adjacent to a previously accessed electronic message toa second position adjacent to the additional electronic message based onidentifying that the first participant has accessed the additionalelectronic message.
 6. The method as recited in claim 5, whereinpersistently maintaining the second access notification element adjacentto the electronic message within the communication thread most recentlyaccessed by the second participant comprises leaving the second accessnotification element adjacent to an electronic message previous accessedby the second participant despite the adding of the additionalelectronic message to the communication thread and the moving for thefirst access notification element from the first position to the secondposition.
 7. The method as recited in claim 6, further comprising:identifying that the second participant has accessed the additionalelectronic message; and moving the second access notification elementfrom adjacent to the electronic message previously accessed by thesecond participant to a position adjacent to the additional electronicmessage based on identifying that the second participant has accessedthe additional electronic message.
 8. The method as recited in claim 6,wherein the additional electronic message is an electronic message sentfrom a participant other than the user.
 9. The method as recited inclaim 1, wherein the first access notification element comprises an iconor an image selected by the first participant.
 10. The method as recitedin claim 8, wherein the first access notification element comprises aprofile picture selected by the first participant.
 11. The method asrecited in claim 1, further comprising including an access notificationelement in the graphical user interface for each participant in theconversation thread in addition to the user.
 12. The method as recitedin claim 1, wherein persistently maintaining, by at least one processor,the first access notification element adjacent to the electronic messagewithin the communication thread most recently accessed by the firstparticipant as new electronic messages are sent and received between theuser, the first participant, and the second participant comprisescausing the first access notification element to disappear from aviewable area of the graphical user interface upon one or more messagesbeing added to the communication thread which the first participant hasnot accessed.
 13. A mobile device, comprising: a display device; atleast one processor; at least one non-transitory computer readablestorage medium storing instructions thereon that, when executed by theat least one processor, cause the mobile device to: display acommunication thread via the display device, comprising: achronologically ordered plurality of electronic messages exchangedbetween a user, a first participant, and a second participant; a firstaccess notification element associated with the first participant; and asecond access notification element associated with the secondparticipant; persistently maintain the first access notification elementadjacent to an electronic message within the communication thread mostrecently accessed by the first participant as new electronic messagesare sent and received between the user, the first participant, and thesecond participant; and persistently maintain the second accessnotification element adjacent to an electronic message within thecommunication thread most recently accessed by the second participant asnew electronic messages are sent and received between the user, thefirst participant, and the second participant.
 14. The mobile device ofclaim 13, wherein the non-transitory computer readable storage mediumstores further instructions thereon that, when executed by the at leastone processor, cause the mobile device to: add an additional electronicmessage to the conversation thread; receive an indication from acommunication server that first participant has accessed the additionalelectronic message; and move the first access notification element froma first position adjacent to a previously accessed electronic message toa second position adjacent to the additional electronic message based onthe received indication that the first participant accessed theadditional electronic message.
 15. The mobile device of claim 14,wherein the non-transitory computer readable storage medium storesfurther instructions thereon that, when executed by the at least oneprocessor, cause the mobile device to: receive the additional electronicmessage from a device associated with the second participant; and detectthat the user has accessed the additional electronic message; and sendan indication to the communication server that the user has accessed theadditional electronic message.
 16. The mobile device of claim 15,wherein the non-transitory computer readable storage medium storesfurther instructions thereon that, when executed by the at least oneprocessor, cause the mobile device to leave the second accessnotification adjacent to an electronic message previously accessed bythe second participant despite the addition of the additional electronicmessage to the communication thread.
 17. A non-transitorycomputer-readable medium storing instructions thereon that, whenexecuted by at least one processor, cause a computer system to: provide,to a user and by at least one computer processor, a communication threadcomprising: a chronologically ordered plurality of electronic messagesexchanged between the user, a first participant, and a secondparticipant, a first access notification element associated with thefirst participant, and a second access notification element associatedwith the second participant; persistently maintain, by the at least onecomputer processor, the first access notification element adjacent to anelectronic message within the communication thread most recentlyaccessed by the first participant as new electronic messages are sentand received between the user, the first participant, and the secondparticipant; and persistently maintain, by the at least one computerprocessor, the second access notification element adjacent to anelectronic message within the communication thread most recentlyaccessed by the second participant as new electronic messages are sentand received between the user, the first participant, and the secondparticipant.
 18. The non-transitory computer-readable medium as recitedin claim 17, further comprising instructions, that when executed by theat least one processor, cause the computer system to: add an additionalelectronic message to the conversation thread; identify that the firstparticipant has accessed the additional electronic message receive aninput from the user of the additional electronic message via thegraphical user interface; display the additional electronic message witha first appearance in the communication thread; determine a change in astatus of the additional electronic message; and change the firstappearance of the additional electronic message to a second appearancebased on the determination that the change in the status of theadditional electronic message.
 19. The non-transitory computer-readablemedium as recited in claim 18, wherein persistently maintaining thefirst access notification element adjacent to the electronic messagewithin the communication thread most recently accessed by the firstparticipant as new electronic messages are sent and received between theuser, the first participant, and the second participant comprises movingthe first access notification element from a first position adjacent toa previously accessed electronic message to a second position adjacentto the additional electronic message based on identifying that the firstparticipant has accessed the additional electronic message.
 20. Thenon-transitory computer-readable medium as recited in claim 19, whereinpersistently maintaining the second access notification element adjacentto the electronic message within the communication thread most recentlyaccessed by the second participant comprises leaving the second accessnotification element adjacent to an electronic message previous accessedby the second participant despite the adding of the additionalelectronic message to the communication thread and the moving for thefirst access notification element from the first position to the secondposition.